Computer hardware devices are generally considered to be tangible, physical things. These physical devices often include registers to and/or from which information (e.g., data, control, configuration) can be read and/or written. Registers may be mapped to memory addresses to facilitate device access. For example, the address 0x3f8 is often mapped to a read/write port on an input/output (I/O) card. Thus, a central processing unit (CPU) or other processor may interact with various computer hardware devices through memory addresses that are mapped to a physical device register. However, computer hardware devices may also be virtualized. Thus, operating systems, applications, and so on, may also interact with virtual devices rather than physical devices. For example, a personal computer may interact with a “disk drive” that is implemented in RAM (Random Access Memory). Like a physical device, the virtual device may also include a set of registers through which data and/or control information can be read and/or written. Thus, a virtual device may also be addressed using, for example, a memory mapped I/O scheme.
A virtual device may be provided, for example, by software, by other hardware devices, by combinations thereof, and so on. When virtualized by software, the virtual device may be implemented on various processors. However, conventionally a performance penalty may be associated with software based virtualization, even when a virtual device is not being accessed. When a device is virtualized in other hardware, the performance penalty associated with software virtualization may be reduced. However, conventional hardware supported virtualization may require a processor to be designed with hardware virtualization support functions, which may increase chip cost, development time, and so on. Also, hardware supported virtualization conventionally requires a processor designer to anticipate interacting with virtualization hardware and to correctly forecast required support functions. Additionally, when hardware supported virtualization is implemented but not employed, the circuitry that implements the built-in virtualization support functions may remain as power-consuming, heat-generating surplus. Furthermore, hardware supported virtualization typically requires complete CPU virtualization, which limits a virtualization scheme to a single level of virtualization privilege. Nevertheless, virtualization may facilitate proto-typing devices, may facilitate testing, may remove certain physical barriers from computing systems, may facilitate partitioning hardware functions among multiple operating systems and applications, and so on.